#!/bin/bash

set -e

# 检查用户是否具有 sudo 权限
if ! sudo -v &> /dev/null; then
    echo "错误：你没有 sudo 权限，无法继续执行此脚本。"
    echo "请联系系统管理员获取 sudo 权限。"
    exit 1
fi

# 设置 clang++ 的优先级
PRIORITY=100

# 检查是否已经安装了 clang++ 11
if clang++-11 --version &> /dev/null; then
    echo "clang++ 11 已经安装，跳过安装步骤。"
else
    # 添加 LLVM 官方仓库以获取最新的 clang 版本
    echo "添加 LLVM 官方仓库以获取最新的 clang 版本..."
    wget https://apt.llvm.org/llvm.sh
    chmod +x llvm.sh
    sudo ./llvm.sh 11

    # 清理下载的脚本
    rm llvm.sh
fi

# 配置 clang++ 11 为默认版本，并设置优先级
echo "配置 clang 11 和 clang++ 11 为默认编译器，优先级为 $PRIORITY..."
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-11 $PRIORITY --slave /usr/bin/clang++ clang++ /usr/bin/clang++-11

# 提示用户如何更改优先级
echo -e "\r\n"
echo ""
echo "安装和配置完成！"
echo "注意：要进行以下操作，你需要使用 'sudo' 命令来获取管理员权限。"
echo "如果你需要更改 clang 和 clang++ 的优先级，或者选择不同版本，可以使用以下命令："
echo "  sudo update-alternatives --config clang"
echo "在选择过程中，数值越高的优先级（如 100）将使该版本成为默认版本。"

echo "当前 clang 版本信息："
clang --version
